Root Zanli
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
o5t6x7pgljbm
/
public_html
/
admin
/
app
/
V2
/
Resources
/
Filename :
TaskResource.php
back
Copy
<?php namespace App\V2\Resources; use App\Libraries\Helpers; use App\Models\Task; use App\Models\User; /** * Transforms task data for API responses */ class TaskResource extends BaseResource { public function fromTaskstoArray($tasks, $should_paginate = false, User $require_for = null ){ $tasks_arr_paginated = $tasks->toArray(); $tasks_arr = []; foreach($tasks AS $task){ $tasks_arr[] = $this->fromTasktoArray($task); } $tasks_arr_paginated['data'] = $tasks_arr; if($should_paginate) return $tasks_arr_paginated; else return $tasks_arr; } public function fromTasktoArray($task, User $require_for = null ){ $task->images; $task_arr = $task->toArray(); $task_arr['goal'] = $task->goal; $task_arr['due_by'] = $task->due_by ? Helpers::dateDiffForHumans($task->due_by) : 'Expiry not set'; $task_arr['due_soon_str'] = $task->due_by ? Helpers::dueByStrForHumans($task->due_by) : 'Expiry not set'; $task_arr['expires_in_str'] = $task->due_by ? Helpers::expiresInStrForHumans($task->due_by) : 'Expiry not set'; $task_arr['expires_on'] = $task->due_by; $task_arr['reward'] = $task->product ? $task->product->toArray() : null; $assigneed_to_users = []; if($task->getTaskAssignees() != null){ foreach($task->getTaskAssignees() AS $task_assignee){ if($task_assignee != null && $task_assignee->assigned_to_user != null){ $assigneed_to_users[] = $task_assignee->assigned_to_user->only(['user_id', 'full_name', 'email','mobile','profile_pic']); } } } //task settings info -- start if($task->taskSetting != null){ $task_arr['review_required'] = $task->taskSetting->review_required; $task_arr['visible_to'] = $task->taskSetting->visible_to; $task_arr['task_review_allowed_to_type'] = $task->taskSetting->task_review_allowed_to_type; if($task->taskSetting->taskReviewAllowedBy != null) $task_arr['task_review_allowed_list'] = $task->taskSetting->taskReviewAllowedBy->toArray(); else $task_arr['task_review_allowed_list'] = null; } else { $task_arr['review_required'] = null; $task_arr['visible_to'] = null; $task_arr['task_review_allowed_to_type'] = null; $task_arr['task_review_allowed_list'] = null; } if($task->taskSetting != null && $task->taskSetting->repeate_after_days && $task->taskSetting->repeate_after_days > 0) { $task_arr['repeate_details'] = [ "repeate_after_days" => $task->taskSetting->repeate_after_days, "repeate_short_summary" => Helpers::daysToHumanCalenderTerm($task->taskSetting->repeate_after_days)]; } else $task_arr['repeate_details'] = null; //task settings info -- end $short_summary = $this->getTaskAssigneeShortSummary($task, $assigneed_to_users); $task_arr['assigned_to_user_details'] = ["short_summary" => $short_summary, "users" => $assigneed_to_users]; if($require_for != null){ //populating user specific details like claim: $response_arr = $this->getUserSpecificDetails($task, $require_for); $task_arr = array_merge($task_arr, $response_arr); } $task_arr['custom_fields'] = []; if(isset($task->customFields) && count($task->customFields) > 0){ foreach($task->customFields AS $customField){ $custom_field_arr = []; $custom_field_arr['field_type'] = $customField->field_type; $custom_field_arr['field_name'] = $customField->field_name; $custom_field_arr['field_label'] = $customField->field_label; $custom_field_arr['data'] = $customField->data; $task_arr['custom_fields'][] = $custom_field_arr; } } $task_arr['readonly'] = $this->isReadonly($task); $task_arr['task_image'] = count($task->images) > 0 ? $task->images[0]->image_name : null; return $task_arr; } private function isReadonly(Task $task){ if( $task->taskSetting != null && in_array($task->taskSetting->visible_to, ['GLOBAL','GLOBAL_FOR_PARENT','GLOBAL_FOR_PARENT_AND_CHILD'])){ return true; } else if( $task->created_by == null || $task->created_by == -1){ return true; } return false; } private function getUserSpecificDetails(Task $task, User $user){ $task_arr = ['current_claim' => null]; if($user->getCurrentRole() != null){ switch($user->getCurrentRole()){ case 'CHILD': $task_arr = $this->getTaskDetailsForChild($task, $user); break; case 'PARENT': case 'SOCIAL_WORKER': break; } } return $task_arr; } private function getTaskDetailsForChild(Task $task, User $user){ $task_arr = ['current_claim' => null]; $task_assigned = $task->getTaskAssignedForUser($user->user_id); if($task_assigned != null){ $claims = $task_assigned->claims; if(count($claims) > 0 && $claims[0]->isCurrentClaim()){ $task_arr['current_claim'] = $claims[0]->toArray(); } } return $task_arr; } public function toShortArray($tasks) { $tasks_arr_paginated = $tasks->toArray(); $new_tasks_arr = []; foreach($tasks AS $task){ $short_summary = []; if( $task->task_sp > 0) $short_summary[] = $task->task_sp . " Scholarship Points"; if($task->product != null) $short_summary[] = "Reward"; $new_task_arr = []; $new_task_arr['task_id'] = $task->task_id; $new_task_arr['task_title'] = $task->task_title; $new_task_arr['description'] = $task->description; $new_task_arr['short_summary'] = implode(" & ", $short_summary); $new_task_arr['task_image'] = count($task->images) > 0 ? $task->images[0]->image_name : null; $new_tasks_arr[] = $new_task_arr; } $tasks_arr_paginated['data'] = $new_tasks_arr; return $tasks_arr_paginated; } } ?>